
package com.insigma.business.qrcode.soldier.dao;




import com.insigma.business.qrcode.job.dto.search.JobRecruitPositionBSearcher;
import com.insigma.business.qrcode.soldier.entity.DataStatsCDO;
import com.insigma.business.qrcode.soldier.entity.JobRecruitPositionDO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;


public interface JobRecruitPositionDao {

    
    List<JobRecruitPositionDO> search(final JobRecruitPositionBSearcher innerSearcher);

    
    JobRecruitPositionDO get(final String id);

    
    Integer insert(final JobRecruitPositionDO jobRecruitPositionDO);

    
    Integer update(final JobRecruitPositionDO jobRecruitPositionDO);

    
    Integer delete(@Param("id") final String id,
                   @Param("modifierType") final String modifierType,
                   @Param("modifierId") final String modifierId);

    
    List<JobRecruitPositionDO> searchFavoritePosition(JobRecruitPositionBSearcher request);

    
    List<JobRecruitPositionDO> listPositionsOfCompany(String companyId);

    Integer count(String companyId);

    List<String> selectAllTypeName(String companyId);

    List<DataStatsCDO> selectTop10Delivery(String companyId);

    int countByBetweenTime(@Param("startTime")Date startTime, @Param("endTime")Date endTime, @Param("companyId")String companyId);

    int countNeedPosNumByBetweenTime(@Param("startTime")Date startTime, @Param("endTime")Date endTime, @Param("companyId")String companyId);

    int unpublishJobFair(String fairId);

    int countByFair(String id);

    void unpublishByDate(Date date);

    Integer countRecruitNum(JobRecruitPositionBSearcher jobRecruitPositionBSearcher);

    Integer countRecruitNeedNum(JobRecruitPositionBSearcher jobRecruitPositionBSearcher);

    List<String> selectAllTypeNameByArea(String adminAreaCode);

    Integer sumRecruitNum(JobRecruitPositionBSearcher jobRecruitPositionBSearcher);

    List<DataStatsCDO> groupJobCountByArea(@Param("adminAreaCode")String adminAreaCode, @Param("nextLevel")int nextLevel, @Param("levelLength")int levelLength);

    List<JobRecruitPositionDO> searchByOrgId(@Param("orgId") String orgId);

    void deleteByOnlineFairOrg(String orgId);
}
